/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import static DAO.DaiLyDAO.PROC_CHECK_MADAILY;
import DTO.LoaiMatHangDTO;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author HuuTri
 */
public class LoaiMatHangDAO {
    static String PROC_DELETE = "spLoaiMatHangDelete";
    static String PROC_UPDATE = "spLoaiMatHangUpdate";
    static String PROC_INSERT = "spLoaiMatHangInsert";
    static String PROC_SELECT_ALL = "spLoaiMatHangSelectAll";
    static String PROC_CHECK_MALOAIMATHANG = "spLoaiMatHangCheckMaLoaiMatHang";
    
    /**
     * check MaLoaiMatHang available
     * @param loaimathang
     * @return 
     */
    public static boolean checkMaLoaiMatHang(LoaiMatHangDTO loaimathang) {
        boolean res = true;
        
        DefaultTableModel tableModel;
        tableModel = SQLHelperDAO.execQuery(PROC_CHECK_MALOAIMATHANG, 
                                            getListParams(loaimathang)
                                            );
        if (tableModel.getRowCount() > 0) {
            res = false;
        }
        
        return res;
    }
    /**
     * get new MaLoaiMatHang
     * @return 
     */
    public static int getNewMaLoaiMatHang() {
        return MaSoDAO.getMaSo(LoaiMatHangDTO.TABLE);
    }
    
    /*Cập nhật một đơn vị dựa vào thông tin mã đơn vị*/
    public static boolean update(LoaiMatHangDTO loaimathang) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_UPDATE, getListParams(loaimathang));
        } catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Thêm một đơn vị*/
    public static boolean insert(LoaiMatHangDTO loaimathang) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_INSERT, getListParams(loaimathang));
            MaSoDAO.updateMaSo(LoaiMatHangDTO.TABLE);
        } catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /**
     * get table model
     * @return 
     */
    public static DefaultTableModel getTableModel() {
        return SQLHelperDAO.execQuery(PROC_SELECT_ALL, null);
    }
    
    /*Xóa một đơn vị*/
    public static boolean delete(LoaiMatHangDTO loaimathang) {
        boolean res = true;
        
        try {
            SQLHelperDAO.execNonQuery(PROC_DELETE, getListParams(loaimathang));
        } catch (Exception ex) {
            res = false;
        }
        
        return res;
    }
    
    /*Lấy danh sách tham số từ đơn vị*/
    private static List<Parameter> getListParams(LoaiMatHangDTO loaimathang) {
        List<Parameter> listParams = new ArrayList<>();
        
        listParams.add(new Parameter(LoaiMatHangDTO.ID, loaimathang.getId()));
        listParams.add(new Parameter(LoaiMatHangDTO.MA_LOAI_MAT_HANG, loaimathang.getMaLoaiMatHang()));
        listParams.add(new Parameter(LoaiMatHangDTO.TEN_LOAI_MAT_HANG, loaimathang.getTenLoaiMatHang()));
        listParams.add(new Parameter(LoaiMatHangDTO.MO_TA, loaimathang.getMoTa()));
        
        return listParams;
    }
}
